<?php
/**
 * CreateTime: 2023/11/15 15:36
 * User:LinQ
 *
 * 该辅助函数主要包含了对于常用解密算法的一些处理
 *
 *  aes_256_cbc_pkcs7
 *
 *  rsa
 *
 */


if (!function_exists('aes_256_cbc_pkcs7_decode')) {
    /**
     * @param string $data 需要加密的字符串
     * @param string $aesKey 需要使用的AesKey 默认 appId
     * @param string $iv 需要使用的 iv 默认 ‘’
     * @param bool $decodeBase64 是否使用base64解密的结果 默认 true
     * @return string|null
     */
    function aes_256_cbc_pkcs7_decode(string $data,string $aesKey = '',string $iv = '',bool $decodeBase64 = true): string|null
    {
        if(!is_string($aesKey)){
            return false;
        }
        if(!$aesKey){
            $aesKey = get_ase_key();
        }
        if(!$iv){
            $iv = get_iv();
        }
        if($decodeBase64){
            $data = base64_decode($data);
        }
        return openssl_decrypt($data, 'AES-256-CBC',$aesKey, OPENSSL_RAW_DATA, $iv);
    }
}

if (!function_exists('rsa_decode')) {
    /**
     * @param string $pvKey 需要加密的字符串
     * @param string $data 需要解密的data
     * @param bool $decodeBase64 是否使用base64解密的结果 默认 true
     * @return string|null
     */
    function  rsa_decode(string $pvKey,string $data ,bool $decodeBase64 = true): string |null
    {
        $privateKey = openssl_pkey_get_private($pvKey);
        if($decodeBase64){
            $data = base64_decode($data);
        }
        openssl_private_decrypt($data, $decryptedData, $privateKey);
        return $decryptedData;
    }
}


